package com.zsc.wxapp.services;

import com.github.pagehelper.PageInfo;
import com.zsc.wxapp.entity.User;
import com.zsc.wxapp.entity.dto.*;
import com.zsc.wxapp.entity.vo.CustomerOfManagerVO;
import com.zsc.wxapp.entity.vo.UserInfoVO;
import com.zsc.wxapp.result.PageResult;

import java.util.List;

public interface UserService {

    /**
     * 用户登录
     * @param userLoginDTO 用户登录信息
     * @return Userinfo
     */
    User login(UserLoginDTO userLoginDTO);

    /**
     * 获取用户详细信息
     * @param userId
     * @return userInfoVO
     */
    UserInfoVO getUserInfo(Long userId);

    /**
     * 获取订单列表
     * @param orderPageDTO 订单列表查询条件
     * @return List
     */
    PageResult orderPage(OrderPageDTO orderPageDTO);


    /**
     * 更新用户次数
     * @param type 类型:1是打印次数，2是反馈次数
     */
    void updateUserTimes(Integer type);

    /**
     * 更新vip天数
     */
    void updateVipDays(String custUuid);

    /**
     * 获取客户经理的名称
     */
    List<String> getManagerName(Integer type);

    /**
     * 添加客户经理
     * @param addManagerDTO
     * @return
     */
    void addManager(AddManagerDTO addManagerDTO) throws Exception;

    /**
     * 获取客户经理所负责的用户
     * @param managerName
     * @return
     */
    List<CustomerOfManagerVO> getEndUserByManager(String managerName);

    /**
     * 添加零售用户
     * @param addEndUserDTO
     */
    void addEndUser(AddEndUserDTO addEndUserDTO) throws Exception;

    /**
     * 分页获取用户数据
     * @param pageSize
     * @param pageNum
     * @param type
     * @return
     */
    PageInfo getAllUser(Integer pageSize, Integer pageNum, Integer type);

    /**
     * 设置用户状态
     * @param userId
     * @param status
     */
    void setStatus(SetStatusDTO setStatusDTO);

    /**
     * 修改密码
     * @param modifyPasswordDTO
     */
    void modifyPassword(ModifyInfoDTO modifyPasswordDTO);

    /**
     * 修改手机号
     * @param modifyInfoDTO
     */
    void modifyPhone(ModifyInfoDTO modifyInfoDTO);
}
